#pragma once
#include "ApplicationBase.hpp"
#include "Systems.hpp"
#include "Resources.hpp"
#include "SceneManager.hpp"
#include "ScriptSystem.hpp"
class Engine;

class Game : public ApplicationBase {
public:
    Game(Engine* engine);
    ~Game();
    bool initialize() override;
    void processInput() override;
    void update(float deltaTime) override;
    void render() override;
    void shutdown() override;
    std::string getName() const override { return "GameApplication"; }
private:
    Engine* engine;
    SDL_Renderer* renderer;
private:
    InputSystem* inputSystem;
    MovementSystem* movementSystem;
    AnimationSystem* animationSystem;
    RenderSystem* renderSystem;
    CollisionSystem* collisionSystem;
    ScriptSystem* scriptSystem;
};